package com.logicfishsoftware.wolfgo.api;

import org.openrdf.annotations.Iri;

/**
 * Represents a resource within the file-system.
 * 
 * @author logicfish@gmail.com
 *
 */
@Iri(VirtualFileSystemConstants.NS+"#File")
public interface VirtualFile {

	/**
	 * Functional property.  Unique per-entity value within the
	 * file-system.
	 * @return
	 */
	@Iri(VirtualFileSystemConstants.NS+"#fileIndex")
	long getFileIndex();
	@Iri(VirtualFileSystemConstants.NS+"#fileIndex")
	void setFileIndex(long fileIndex);

	@Iri(VirtualFileSystemConstants.NS+"#fileAttributes")
	void setFileAttribute(int fileAttributes);
	@Iri(VirtualFileSystemConstants.NS+"#fileAttributes")
	int getFileAttribute();

	@Iri(VirtualFileSystemConstants.NS+"#fileParent")
	VirtualDirectory getParent();
	@Iri(VirtualFileSystemConstants.NS+"#fileParent")
	void setParent(VirtualDirectory fileParent);

	@Iri(VirtualFileSystemConstants.NS+"#fileName")
	String getFileName();
	@Iri(VirtualFileSystemConstants.NS+"#fileName")
	void setFileName(String fileIndex);

	@Iri(VirtualFileSystemConstants.NS+"#fileCreationTime")
	long getCreationTime();
	@Iri(VirtualFileSystemConstants.NS+"#fileCreationTime")
	void setCreationTime(long fileIndex);

	@Iri(VirtualFileSystemConstants.NS+"#fileLastAccess")
	long getLastAccessTime();
	@Iri(VirtualFileSystemConstants.NS+"#fileLastAccess")
	void setLastAccessTime(long fileIndex);

	@Iri(VirtualFileSystemConstants.NS+"#fileLastWrite")
	long getLastWriteTime();
	@Iri(VirtualFileSystemConstants.NS+"#fileLastWrite")
	void setLastWriteTime(long fileIndex);
}
